class Solution 
{
public:
    int minSubArrayLen(int target, vector<int>& nums) 
    {
        // int left = 0, right = 0, sz = nums.size();
        // int sum = 0, len_min = INT_MAX;
        // while(right < sz)
        // {
        //     sum += nums[right];  // 进入窗口
        //     while(sum >= target)  // 判断是否滑出窗口
        //     {
        //         len_min = min(len_min, right - left + 1); // 更新结果
        //         sum -= nums[left++]; // 滑出窗口
        //     }

        //     ++right;
        // }

        int sz = nums.size(), sum = 0, len_min = INT_MAX;
        for(int left = 0, right = 0; right < sz; ++right)
        {
            sum += nums[right];  // 进入窗口
            while(sum >= target)  // 判断是否滑出窗口
            {
                len_min = min(len_min, right - left + 1); // 更新结果
                sum -= nums[left++]; // 滑出窗口
            }
        }

        return len_min == INT_MAX ? 0 : len_min;    
    }
};